当前位置:  开发笔记 > 数据库 > 正文

ORACLE | SUBSTR功能不起作用

如何解决《ORACLE|SUBSTR功能不起作用》经验,为你挑选了1个好方法。

我有关于SUBSTR功能的问题.

想象一下表(TABLE1):

ABC_DEF   DESCRIPTION
--------  -------------
0999      TEST INFO

如果我这样查询:

SELECT * FROM TABLE1 
WHERE 
(
     ABC_DEF = '0999'
)

我得到了这个结果:

ABC_DEF   DESCRIPTION
--------  -------------
0999      TEST INFO

但是,如果我这样做:

SELECT * FROM TABLE1 
WHERE 
(
     ABC_DEF = SUBSTR('00000999', 5, 4)
)

我得到0结果.我根本不明白这种行为.属性ABC_DEF是char(8).



1> MT0..:

CHAR(8)列将右垫与空间的值(CHR(32))字符,直到它具有8的长度.

SQL小提琴

Oracle 11g R2架构设置:

CREATE TABLE table1 ( ABC_DEF CHAR(8), DESCRIPTION VARCHAR2(20) );

INSERT INTO table1 VALUES ( '0999', 'TEST INFO' );

查询1:

SELECT * FROM TABLE1 
WHERE ABC_DEF = '0999'

结果:

|  ABC_DEF | DESCRIPTION |
|----------|-------------|
| 0999     |   TEST INFO |

查询2:

SELECT * FROM TABLE1 
WHERE ABC_DEF = SUBSTR('00000999', 5, 4)

结果:

问题3:

SELECT * FROM TABLE1 
WHERE ABC_DEF = RPAD( SUBSTR('00000999', 5, 4), 8, ' ' )

结果:

|  ABC_DEF | DESCRIPTION |
|----------|-------------|
| 0999     |   TEST INFO |

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有